package donggui;

import java.util.*;

class item32 {
}
class Solution32 {
    public static int longestValidParentheses(String s) {
        //1.先求出字符串的长度，然后得到该长度各种有效括号的排列 x（好像不大行）
        //2.使用栈的操作，把左括号按顺序加入进第一个栈，把右括号按顺序加入队列
        //右括号先出队列，然后栈再弹出，如果左右匹配则+1

        Stack<Integer> stack = new Stack<>();
        List<Character> res = new ArrayList<>();
        int max =0;
        char [] c = s.toCharArray();
        int i = 0 ;
        int start = 0;
        while (i<c.length)
        {
            if(c[i]=='(') {
                stack.push(i);
                i++;
            }
            else{
                if(!stack.isEmpty())
                {
                    stack.pop();
                    if(stack.isEmpty())
                    {
                        max = Math.max(max,i-start+1);
                    }else {
                        max = Math.max(max,i-stack.peek());
                    }
                    i++;
                }
                else {
                    start = i + 1;
                    i++;
                }
            }
        }


       return max;
    }

    public static void main(String[] args) {
        String s =" )()())";
        int i = longestValidParentheses(s);
        System.out.println(i);
    }
}